#include <cstdlib>
#include "Labyrinthe.h"

/*
 * Constructeur prenant en paramètre la taille initial(longeur et largeur
 * de la matrice de jeu.
 * Il est chargé sur base de ses valeurs d'initialiser une matrice.
 */
Labyrinthe::Labyrinthe(int matrix_height, int matrix_width) {
	this->matrix_height = matrix_height;
	this->matrix_width = matrix_width;
	this->gamePanel = new char*[matrix_height];
	for (int i = 0; i < matrix_height; i++) {
		this->gamePanel[i] = new char[matrix_width];
	}
}

/*
 * Setteur de la hauteur de la matrice de jeu
 */
void Labyrinthe::setMatrixHeight(int matrix_height) {
	this->matrix_height = matrix_height;
}

/*
 * Setteur de la largeur de la matrice de jeu
 */
void Labyrinthe::setMatrixWidth(int matrix_width) {
	this->matrix_width = matrix_width;
}

/*
 * Setteur permettant de définir quel type d'élément du jeu(pastille, mur, pacman,...)
 * se trouve à quel point(X, Y)
 */
void Labyrinthe::setElement(int y, int x, char element) {
	this->gamePanel[y][x] = element;
}

/*
 * Fonction permettant d'enregistrer auprès du labyrinthe le point où les ghosts doivent réaparraitre
 * après avoir été manger par le pacman en mode SUPER
 */
void Labyrinthe::registerGhostBirthPLace(int y, int x) {
	this->bPLaceGhostY = y;
	this->bPLaceGhostX = x;
}

/*
 * destructeur permettant de supprimer l'espace mémoire occupé par la matrice
 * lors qu'un changement de niveau est effectué
 */
Labyrinthe::~Labyrinthe() {
	for (int i = 0; i < matrix_height; i++) {
		delete[] this->gamePanel[i];
	}
	delete[] this->gamePanel;
}

